<?php

namespace app\common\library;


use app\common\cache\ConfigCache;
use app\common\utils\Utils;
use think\Cache;
use think\Db;
use think\exception\ValidateException;
use think\Session;

/**
 * 平台管理
 */
class Platform
{

    /**
     * 单例对象
     */
    protected static $instance;
    protected $key;
    protected static $master = [
        // 数据库类型
        'type'        => 'mysql',
        // 数据库连接DSN配置
        'dsn'         => '',
        // 服务器地址
        'hostname'    => '47.104.65.211',
        // 数据库名
        'database'    => 'sassback',
        // 数据库用户名
        'username'    => 'sassback',
        // 数据库密码
        'password'    => '123456',
        // 数据库连接端口
        'hostport'    => '3306',
        // 数据库连接参数
        'params'      => [],
        // 数据库编码默认采用utf8
        'charset'     => 'utf8',
        // 数据库表前缀
        'prefix'      => 'hz_',
    ];
    static $base = [
        'cdnurl' => '',
        'version' => '1.0.1',
        'timezone' => 'Asia/Shanghai',
        'forbiddenip' => '',
        'languages' =>
            array (
                'backend' => 'zh-cn',
                'frontend' => 'zh-cn',
            ),
        'fixedpage' => 'dashboard'
    ];
    /**
     * 初始化
     * @access public
     */
    public static function instance($key)
    {
        if (is_null(self::$instance)) {
            self::$instance = new static($key);
        }

        return self::$instance;
    }

    /**
     * 构造函数
     * @param int $platform_id
     */
    public function __construct($key)
    {
        $this->key = $key;
    }

    /**
     * 配置参数
     * 后台专用函数
     */
    public function getPlatConfig() {
        //从redis服务器同步 平台信息
        $config = ConfigCache::instance($this->key)->getCache();
        if (!$config) {
            throw new ValidateException('平台key填写错误');
        }
        //总平台数据存入session
        Session::set("platform_config", $config);
        //获取到平台信息 合并database数据
        ConfigCache::instance()->refreshFile();
        return $config;
    }

    /**
     * 合并配置参数
     * backent 初始化方法用到
     */
    public static function combineConfig($auth) {
        if ($auth->isLogin()) {
            //同步site数据 这个地方已经有数据库地址
            ConfigCache::instance()->refreshFile();
        } else {
            config('site', self::$base);
        }
    }



}
